g_error_free (error);
}
else
- g_signal_connect (manager->bookmarks_monitor, "changed",
- G_CALLBACK (bookmarks_file_changed), manager);
+ manager->bookmarks_monitor_changed_id = g_signal_connect (manager->bookmarks_monitor, "changed",
+ G_CALLBACK (bookmarks_file_changed), manager);
g_object_unref (bookmarks_file);
g_return_if_fail (manager != NULL);
if (manager->bookmarks_monitor)
- g_object_unref (manager->bookmarks_monitor);
+ {
+ g_file_monitor_cancel (manager->bookmarks_monitor);
+ g_signal_handler_disconnect (manager->bookmarks_monitor, manager->bookmarks_monitor_changed_id);
+ manager->bookmarks_monitor_changed_id = 0;
+ g_object_unref (manager->bookmarks_monitor);
+ }
if (manager->bookmarks)
{
GSList *bookmarks;
GFileMonitor *bookmarks_monitor;
+ gulong bookmarks_monitor_changed_id;
gpointer changed_func_data;
GtkBookmarksChangedFunc changed_func;